//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Linq;

using ProjectBase.Core;

using $prjsn$.Entity;
using $prjsn$.Common;
using $prjsn$.Common.Data;
using $prjsn$.Common.Business;

namespace $safeprojectname$
{
    /// <summary>
    ///   All Business checks for 'CustomListType' on CRUD operations
    ///   are managed by: CustomListTypeFacade
    /// </summary>
    public class CustomListTypeFacade : CodeListFacade<CustomListType, CustomListTypeFilter, ICustomListTypeDao>, ICustomListTypeFacade
    {
        #region IBaseFacade<T> override - FACTORY METHOD

        /// <summary>
        /// Factory Method pattern.
        /// A central and only point for creating new entity of the type CustomListType.
        /// </summary>
        /// <returns>new entity 'CustomListType' transient</returns>
        public override CustomListType CreateNew()
        {
            var entity = base.CreateNew();

            // TODO preset entity
            return entity;
        }

        /// <summary>
        /// Needed for the BaseFacade checks on Update() and Delete().
        /// </summary>
        /// <returns></returns>
        public override CustomListTypeFilter CreateNewFilter()
        {
            var filter = base.CreateNewFilter();
            // TODO preset filter
            return filter;
        }

        #endregion IBaseFacade<T> override - FACTORY METHOD

        #region ICustomListTypeFacade

        // TODO any application dependent operations,
        // declared in ICustomListTypeFacade
        // put here (e.g. 'public virtual bool IsOtherEntityInUse(OtherEntity item)')

        #endregion ICustomListTypeFacade

        #region properties

        // NOTE: You MUST extend ICustomListTypeFacade declaration this way:
        // IUserFacade UserFacade { set; }
        // to get injected instance (by the IocWithProxyFactory)

        // public virtual IUserFacade UserFacade { protected get; set; }

        #endregion properties
    }
}